﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace lesson_4
{
    internal class Program
    {
        static void Main(string[] args)
        {

            #region 算数运算符 
            // 1.算数运算符:是用于数值类型进行计算的运算符,他的返回结果都是数值
            // 2. = :赋值符号( 把等号右边的值赋值给左边 )
            string name = "张三"; 
            int age = 10;
            float height = 185.5f;
            // 3. + : 先计算右侧的结果,在赋值给左侧 
            int i = 1;
            i = i + 1 + 1 + 2;
            Console.WriteLine(i);
            // 4. - : 先计算右侧的结果,再赋值给左侧 
            int i1 = 1;
            i1 = i1 - 1 - 1 - 4; 
            Console.WriteLine(i1);
            int i2 = 1 - 1 - 4;
            Console.WriteLine(i2);
            // 5. * : 先计算右侧的结果,再赋值给左侧 
            int i3 = 1 * 2 * 4 * 3;
            i3 = i3 * 1 * 2 * 3;
            Console.WriteLine(i3);
            // 6. / , 先计算右侧的结果,再赋值给左侧  
            int i4 = 100 / 2 / 5 / 5;
            i4 = 109 / 3 / 9;
            Console.WriteLine(i4);
            // 7. %, 取余,  先计算右侧的结果,再赋值给左侧
            int i5 = 10 % 3;
            i5 = 20 % 3 % 5;
            i5 = 30 % 4 % 7;
            Console.WriteLine(i5);

            // 8.算术运算符的优先级: 乘除取余的优先级高于加减, 有括号的话先计算括号里面的内容

            // 9.复合运算符 
            // 写法: +=, -=, *=, /=, %= 
            int i6 = 10;
            i6 += 10; // 就相当于 i6 = i6 + 10;    20
            i6 -= 5; //  就相当于 i6 = i6 - 5;     15
            i6 *= 2; //  就相当于 i6 = i6 * 2;     30
            i6 /= 6; //  就相当于 i6 = i6 / 6;     5
            i6 %= 2; //  就相当于 i6 = i6 % 2;     1
            Console.WriteLine(i6);

            // 10.复合运算符只能进行一种运算,不能混和运算  不能这样写: i6 +=-= 3;

            // 11.算数运算符的自增减  
            int i7 = 1;
            // i7 = i7 + 1;   2
            // i7 += 1;       2
            // i7++; // 相当于 i7 += 1
            // ++i7; // 相当于 i7 += 1
            Console.WriteLine(i7);

            // i7++: 先用再加,   ++i7先加再用 
            // Console.WriteLine(i7++);  // 1,  先用 i7的值在控制台上输出, 在对i7进行加1的运算
            // Console.WriteLine(++i7); // 2, 先进行 i7加1的运算, 再在控制台上进行输出.
            //Console.WriteLine(i7++);  //1
            //Console.WriteLine(i7);  //2
            int i8 = 2;
            // Console.WriteLine( i7 + i7 + ++i8 );  // 5
            // Console.WriteLine(i7 + i7 +++i8);  // 4 
            Console.WriteLine(i7++ + ++i7 + ++i8 + i8++); //10
            //                 1 + 3 + 3 + 3 

            //int a = 2, b = 3;

            //int c = (a++) * (--b); 
            int a = 2;
            int b = 3;
            int c = 4;
            Console.WriteLine(  b / c % a );
            int res =  a + b - 20 * c / (b % a) + b / c % a; 
            //          5  - 80    /  1  + 0
            Console.WriteLine("res:" + res);

            Console.WriteLine("a:" + a); 
            Console.WriteLine("b:" + b); 
            Console.WriteLine("c:" + c);

            //int c = (a++) * (--b);
            //Console.WriteLine("a = " + a);
            //Console.WriteLine("b = " + b);
            //Console.WriteLine("c = " + c);

            //c = a++ * ++a * a-- * --a;
            //Console.WriteLine("a = " + a);
            //Console.WriteLine("c = " + c);

            //c = a++ * --b + ++a / b--;
            //Console.WriteLine("a = " + a);
            //Console.WriteLine("b = " + b);
            //Console.WriteLine("c = " + c);

            #endregion

            #region 字符串拼接
            // 1.算数运算符只是用来进行数值类型的计算 
            //  string 不存在算数运算符,但是可以通过 + 号进行拼接 
            string str = "123";
            // str = str + "456";  // 字符串 + 字符串  123456
            // str = str + 1;      // 字符串 + 数值    1231
            // str = str + "1" + 4 + true;  // 12314True 
            // str += "1" + 4 + true;   // 12314True
            // str = str + 4 + true;  // 1234True
            // str += 4 + true;  // 报错 
            // str += 1 + 2 + 3 + 4; // 12310 
            // str = str + 1 + 2 + 3 + 4;// 1231234
            // str += "" + 1 + 2 + 3 + 4; // 1231234
            str = "";
            // str += 1 + 2 + "" + 3 + 4; // 334
            // str += 1 + 2 + "" + (3 + 4); //37 
            str = str + 1 + 2 + "" + 3 + 4; // 1234 
            Console.WriteLine(str);  

            // 2.string.Format("拼接的内容", 内容1, 内容2) 
            // {数字}: 占位符, 数字: 0-n,依次往后
            string str1 = string.Format("我是{0},今年{1}岁,今天{2}", "张三", 18, "很开心认识大家");
            str1 = string.Format("今天{0},我想{1},可惜{2}","周一","睡懒觉","要上课");
            str1 = string.Format("楼层高{0}米", 3.3);
            Console.WriteLine(str1);
        



            #endregion

        }
    }
}
